<?

function user_register_form($form_state) {
	if (user_registered()) {
		drupal_set_message(t('Вы уже зарегистрированы в системе <b>IP-PBX</b>.'),'warning');
		return;
	}
	
	if ( !ippbx_free_numbers() ) {
		drupal_set_message(t('Регистрация временно закрыта. Нет свободных номеров в системе <b>IP-PBX</b>. Обратитесь к администратору.'),'error');
		return;
	}
	
	$form = array();
	
	$form['#redirect'] = 'ippbx/info';
	
	$form['register'] = array(
		'#type' => 'fieldset',
		'#title' => t('Регистрация нового пользователя IP-PBX.'),
		'#collapsible' => TRUE,
	);
	
	$form['register']['user_type'] = array(
		'#type' => 'radios', 
		'#title' => t('Выберите тип регистрации'), 
		'#options' => array(t('Физическое лицо'), t('Юридическое лицо')),
		'#ahah' => array(
		  'path'    => 'ippbx/register/js',
		  'wrapper' => 'register-wrapper',
		  'method'  => 'replace',
		  'event'   => 'change',
		  'effect'  => 'fade',
		),
		'#suffix' => '<div id="register-wrapper"></div>'
	);
	
	$form['register']['ind'] = array();
	
	$form['submit'] = array(
		'#type' => 'submit',
		'#default_value' => t('Зарегистрироваться'),
	);
	
	return $form;
}

function user_register_legal() {
	$form = array();
	
	$form['legal'] = array(
		'#type' => 'fieldset',
		'#title' => t('Регистрация юридического лица.'),
		'#collapsible' => TRUE,
	);
	
	$form['legal']['FIO'] = array(
		'#type' => 'textfield',
		'#title' => t('Ф.И.О. руководителя'),
		'#description' => t('Введите фамилию, имя и отчество руководителя фирмы.'),
		'#size' => 50,
		'#maxlength' => 255,
	);
	
	$form['legal']['FirmName'] = array(
		'#type' => 'textfield',
		'#title' => t('Название фирмы'),
		'#description' => t('Введите название фирмы.'),
		'#size' => 50,
		'#maxlength' => 255,
	);
	
	$form['legal']['INN'] = array(
		'#type' => 'textfield',
		'#title' => t('ИНН'),
		'#description' => t('Идентификационный номер налогоплательщика.'),
		'#size' => 10,
		'#maxlength' => 10,
	);
	
	$form['legal']['OKPO'] = array(
		'#type' => 'textfield',
		'#title' => t('ОКПО'),
		'#description' => t('Общероссийский классификатор предприятий и организаций.'),
		'#size' => 10,
		'#maxlength' => 10,
	);
	
	$form['legal']['KPP'] = array(
		'#type' => 'textfield',
		'#title' => t('КПП'),
		'#description' => t('Код причины постановки на учёт'),
		'#size' => 9,
		'#maxlength' => 9,
	);

	$form['legal']['PC'] = array(
		'#type' => 'textfield',
		'#title' => t('Расчетный счет'),
		'#description' => t('текущий счёт, счёт до востребования'),
		'#size' => 20,
		'#maxlength' => 20,
	);
	
	$form['legal']['KC'] = array(
		'#type' => 'textfield',
		'#title' => t('Корреспондентский счёт'),
		'#size' => 20,
		'#maxlength' => 20,
	);
	return $form;
}

function user_register_individual() {
	$form = array();
	
	$form['individual'] = array(
		'#type' => 'fieldset',
		'#title' => t('Регистрация физического лица.'),
		'#collapsible' => TRUE,
	);
	
	$form['individual']['FIO'] = array(
		'#type' => 'textfield',
		'#title' => t('Ф.И.О.'),
		'#description' => t('Введите ваши фамилию, имя и отчество.'),
		'#size' => 50,
		'#maxlength' => 255,
	);
	
	$form['individual']['Series'] = array(
		'#type' => 'textfield',
		'#title' => t('Серия паспорта'),
		'#description' => t('Введите серию вашего паспорта.'),
		'#size' => 4,
		'#maxlength' => 4,
	);
	
	$form['individual']['Number'] = array(
		'#type' => 'textfield',
		'#title' => t('Номер паспорта'),
		'#description' => t('Введите номер паспорта.'),
		'#size' => 6,
		'#maxlength' => 6,
	);
	
	$form['individual']['Date'] = array(
	  '#type' => 'date', 
	  '#title' => t('Дата выдачи'), 
	  '#description' => t('Дата выдачи/смены паспорта.'), 
	);

	$form['individual']['Otdel'] = array(
		'#type' => 'textfield',
		'#title' => t('Кем выдан:'),
		'#description' => t('Введите подразделение выдавшее паспорт:'),
		'#size' => 70,
		'#maxlength' => 255,
	);
	
	$form['individual']['Address'] = array(
		'#type' => 'textarea',
		'#title' => t('Адрес прописки'),
		'#description' => t('Введите адрес прописки указанный в паспорте.'),
	);
	return $form;
}

function user_register_select(){
	
	// Строим новую форму
	$form_state = array('submitted' => FALSE);
	$form_build_id = $_POST['form_build_id'];
	
	// Получаем текущую форму из кэша
	$form = form_get_cache($form_build_id, $form_state);
	
	$form['register']['ind'] = array();;
	
	if ($_POST['user_type'] == 0) {
		$form['register']['ind'] = user_register_individual();
	} else {
		$form['register']['ind'] = user_register_legal();
	}

	// и сохраняем в кэше
	form_set_cache($form_build_id, $form, $form_state);
	
	$form += array(
		'#post' => $_POST,
		'#programmed' => FALSE,
	);
	
	// Перестраиваем форму
	$form = form_builder('ippbx_register_user', $form, $form_state);
	
	// Рендер элемента формы и отправка клиенту
	$output .= drupal_render($form['register']['ind']);

	drupal_json(array('status' => TRUE, 'data' => $output));
}

function user_register_form_validate($form, &$form_state) {
	if ($form_state['values']['user_type'] == 0) {//физическое лицо
	
		$form_state['values']['FIO'] = check_plain($form_state['values']['FIO']);
		$form_state['values']['Address'] = check_plain($form_state['values']['Address']);
		$form_state['values']['Otdel'] = check_plain($form_state['values']['Otdel']);
		
		if ( !user_register_data_check($form_state['values']['Series'],4) ) {
			form_set_error('Series',t('Поле серия паспорта: некоректный ввод.'));
		}
		
		if ( !user_register_data_check($form_state['values']['Number'],6) ) {
			form_set_error('Number',t('Поле номер паспорта: некоректный ввод.'));
		}
		
		if ($form_state['values']['FIO'] == NULL) {
			form_set_error('FIO',t('Поле Ф.И.О: не может быть пустым.'));
		}
		
		if ($form_state['values']['Address'] == NULL) {
			form_set_error('Address',t('Поле адрес прописки: не может быть пустым.'));
		}
		
		if ($form_state['values']['Otdel'] == NULL) {
			form_set_error('Otdel',t('Поле кем выдан: не может быть пустым.'));
		}
	} else {//юридическое лицо
		$form_state['values']['FIO'] = check_plain($form_state['values']['FIO']);
		$form_state['values']['FirmName'] = check_plain($form_state['values']['FirmName']);
		$form_state['values']['INN'] = check_plain($form_state['values']['INN']);
		$form_state['values']['OKPO'] = check_plain($form_state['values']['OKPO']);
		$form_state['values']['KPP'] = check_plain($form_state['values']['KPP']);
		$form_state['values']['KC'] = check_plain($form_state['values']['KC']);
		$form_state['values']['PC'] = check_plain($form_state['values']['PC']);
		
		if ($form_state['values']['FIO'] == NULL) {
			form_set_error('FIO', t('Поле Ф.И.О: не может быть пустым.'));
		}
		
		if ($form_state['values']['FirmName'] == NULL) {
			form_set_error('FIO', t('Поле Название фирмы: не может быть пустым.'));
		}
		
		if ( !user_register_data_check($form_state['values']['INN'], 10) ) {
			form_set_error('INN', t('Поле ИНН: некоректный ввод.'));
		}
		
		if ( !user_register_data_check($form_state['values']['OKPO'], 8) ) {
			form_set_error('OKPO', t('Поле ОКПО: некоректный ввод.'));
		}

		if ( !user_register_data_check($form_state['values']['KPP'], 9) ) {
			form_set_error('KPP', t('Поле КПП: некоректный ввод.'));
		}

		if ( !user_register_data_check($form_state['values']['KC'], 20) ) {
			form_set_error('KC', t('Поле К/С: некоректный ввод.'));
		}

		if ( !user_register_data_check($form_state['values']['PC'], 20) ) {
			form_set_error('PC', t('Поле Р/С: некоректный ввод.'));
		}
	}
}

function user_register_form_submit($form, &$form_state) {
	global $user;
	ippbx_set_db();
	$data = $form_state['values'];
	db_query('INSERT INTO UserProfile (ID_User, UserType) VALUES( %d, %d)', $user->uid, $data['user_type']);
	
	if ($data['user_type'] == 0) {//физическое лицо
		$data['Date'] = $data['Date']['year'].'-'.$data['Date']['month'].'-'.$data['Date']['day'];
		db_query("INSERT INTO UserIndividual VALUES(%d, '%s', '%s', '%s', '%s', '%s', '%s')", $user->uid, $data['FIO'], $data['Address'], $data['Series'], $data['Number'], $data['Date'], $data['Otdel']);
	} else {//Юридияеское лицо
		db_query("INSERT INTO UserLegal VALUES(%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $user->uid, $data['FirmName'], $data['FIO'], $data['INN'], $data['OKPO'], $data['KC'], $data['PC'], $data['KPP']);
	}
	ippbx_unset_db();
	
	ippbx_unumber_action( $user->uid );
	
	drupal_set_message(t('Вы успешно зарегистрированы в системе.'));
}

function user_register_data_check( $var = NULL, $len = 1) {

	if ($var == NULL || strlen($var) < $len || !preg_match( "/[0-9]/i", $var)) {
		return FALSE;
	}
	
	return TRUE;
}

?>